#define NULL 0
template <class T>
class MyNode {
public:
	template<class T>
	friend class MySuperLinkList;
	MyNode();
	MyNode(const T& data);
	MyNode(const T& data,MyNode<T>* link);
	~MyNode();
private:
	T data;
	MyNode<T>* link;
};

template<typename T>
MyNode<T>::MyNode()
{
	data = 0;
	link = NULL;
}
template<typename T>
MyNode<T>::MyNode(const T& data)
{
	this->data = data;
	link = NULL;
}
template<typename T>
MyNode<T>::~MyNode()
{
	delete link;
}
template<typename T>
MyNode<T>::MyNode(const T& data, MyNode<T>* link)
{
	this->data = data;
	this->link = link; 
}